home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / Audio / Patchmix / Source / draw.psw < prev    next >
Text File  |  1992-03-28  |  1KB  |  75 lines

  1. #import <string.h>
  2.  
  3. defineps PSInit()
  4.  
  5. /oval {
  6. % w h x y
  7.     translate scale newpath .5 .5 .5 0 360 arc
  8. } def
  9.  
  10. /line {
  11. % w h x y
  12.     moveto rlineto stroke
  13. } def
  14.  
  15. /setup {
  16. % linejoin lincap linewidth
  17.     setlinewidth
  18.     setlinecap
  19.     setlinejoin
  20.     gsave
  21. } def
  22.  
  23. /arrow {
  24. % angle x y
  25.     newpath
  26.     moveto
  27.     dup rotate
  28.     -13 6 rlineto
  29.     4 -6 rlineto
  30.     -4 -6 rlineto
  31.     closepath
  32.     gsave
  33.     0 setlinejoin
  34.     stroke
  35.     grestore
  36.     fill
  37.     neg rotate
  38. } def
  39.  
  40. endps
  41.  
  42. /*
  43.  * The following proc has an interesting feature.  Since we draw an oval by
  44.  * drawing a unit circle, then scaling it in both directions, we run into the
  45.  * problem that the linewidth also gets scaled!  We avoid this by reverting
  46.  * to the device matrix (the non-scaled matrix) just before stroking the line.
  47.  * This works because the path is built up with the scaled matrix, but the
  48.  * stroke is done with the unscaled one.  Neat, huh?
  49.  */
  50.  
  51. defineps PSFramedOval(float x, y, w, h)
  52.     w h x y oval
  53.     matrix defaultmatrix setmatrix stroke
  54. endps
  55.  
  56. defineps PSFilledOval(float x, y, w, h)
  57.     w h x y oval fill
  58. endps
  59.  
  60. defineps PSLine(float x, y, w, h)
  61.     w h x y line
  62. endps
  63.  
  64. defineps PSCurve(float x0, y0, x1, y1, x2, y2, x3, y3)
  65.     x0 y0 moveto x1 y1 x2 y2 x3 y3 curveto stroke
  66. endps
  67.  
  68. defineps PSArrow(float x, y, angle)
  69.     angle x y arrow
  70. endps
  71.  
  72. defineps PSSetParameters(int cap, join; float linewidth)
  73.     join cap linewidth setup
  74. endps
  75.